home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 4.9 KB | 114 lines |
- 10 REM PRECISION 5:PI-3.1416: PRINT: PRINT: HP=PI/2
- 20 PRINT "PROGRAM FOR CALCULATING MICROSTRIP CHARACTERISTICS V2.2 2/6/83"
- 22 PRINT:PRINT,"K2UYH --- modified for ibm pc --- wa2tif":PRINT
- 25 PRINT: INPUT "SINGLE (S) OR COUPLED (C) MICROSTRIP"; Q1$
- 26 IF Q1$="C" THEN 395 ELSE IF Q1$<>"S" THEN 25
- 30 PRINT:INPUT "WANT TO CALC Z0, WIDTH (W) OR HIGHT (H)"; A$
- 40 PRINT: IF A$="Z0" THEN 320 ELSE IF A$="W" THEN 60
- 50 INPUT "WHAT IS LINE WIDTH"; W: GOTO 70
- 60 INPUT "WHAT IS BOARD HIGHT IN INCHES"; H
- 70 INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER
- 80 INPUT "WHAT IS DESIRED Z0"; Z0
- 90 INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
- 100 IF Q$="Y"THEN INPUT"STRIP THICKNESS IN INCHES";T
- 105 GOSUB 200
- 110 LPRINT,: LPRINT, "WIDTH ="; W; " HIGHT ="; H; " Z0 ="; ZT
- 115 LPRINT: LPRINT,"FREQ="F;TAB(20)"V.F.="VF;TAB(40)"WAVELENGTH INCHES="WL: GOTO 175
- 116 REM IF DV=2 THEN 175
- 120 PRINT: INPUT "DO YOU WANT TO CALC WAVELENGTH (Y OR N)"; W$
- 130 PRINT: IF W$="N" THEN 170 ELSE INPUT "FREQ IN MHZ"; F
- 150 VF=1/SQR(EF): WL=VF*11808/F: LPRINT ,
- 160 LPRINT , "V.F. ="; VF, "WAVELENGTH INCHES ="; WL
- 170 PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
- 171 IF H$="N"THEN 175 ELSE IF H$<>"Y"THEN 170 ELSE DV=2
- 172 LPRINT:LPRINT,"MICROSTRIP CHARACTERISTICS":GOTO 110
- 175 REM DV=0:PRINT:INPUT"DO YOU WANT TO CONTINUE (Y OR N)";Q$:PRINT
- 180 IF Q$="N" THEN END ELSE 30
- 190 REM **************** SUB #1 ***************
- 200 A=Z0/60*SQR((ER+1)/2)+(ER-1)/(ER+1)*(0.23+0.11/ER)
- 210 B=377*PI/(2*Z0*SQR(ER))
- 220 R=2*(B-1-LOG(2*B-1)+(ER-1)*(LOG(B-1)+0.39-0.61/ER)/(2*ER))/PI
- 230 IF R>2 THEN 240 ELSE R=8*EXP(A)/(EXP(2*A)-2)
- 240 IF A$="H" THEN H=W/R ELSE W=R*H
- 245 X=1/R: GOSUB 280: IF Q$<>"Y" THEN RETURN
- 250 IF R>0.16 THEN Q=2*H/T ELSE Q=4*PI*W/T
- 260 DR=T*(1+LOG(Q))/(PI*H): R=R-DR
- 275 IF A$="H" THEN H=W/R ELSE W=R*H
- 276 RETURN
- 279 REM ************** SUB #2 *******************
- 280 IF R<1 THEN 300 ELSE EF=(ER+1)/2+(ER-1)/(2*SQR(1+12*X))
- 290 ZT=120*PI/(SQR(EF)*(R+1.393+2*LOG(R+1.444)/3)): RETURN
- 300 EF=(ER+1)/2+(ER-1)/2*(1/SQR(1+12*X)+0.04*(1-R)^2)
- 310 ZT=60*LOG(8*X+R/4)/SQR(EF): RETURN
- 315 REM ***************** Z0 ANALYSIS ********************
- 320 INPUT "WHAT IS LINE WIDTH"; W
- 330 INPUT "WHAT IS BOARD HIGHT IN INCHES"; H
- 340 INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER: R=W/H
- 350 INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
- 360 IF Q$<>"Y" THEN 390 ELSE INPUT "STRIP THICKNESS IN IN."; T
- 370 IF R>0.16 THEN Q=2*H/T ELSE Q=4*PI*W/T
- 380 DR=T*(1+LOG(Q))/(PI*H): R=R-DR
- 390 X=1/R: GOSUB 280: PRINT "Z0 ="; ZT: GOTO 120
- 391 REM ***************** COUPLED MS ********************
- 395 DEF FNCH(X)=(EXP(X)+EXP(-X))/2
- 396 DEF FNAC(X)=LOG(X+SQR(X*X-1))
- 397 DEF FNG(Y)=FNCH(HP*Y)
- 398 DEF FNH(X,Y)=FNCH(PI*X+HP*Y)
- 400 PRINT: PRINT "WANT TO CALCULATE:"
- 401 PRINT TAB(15) "Zoe AND Zoo - (Z0)"
- 402 PRINT TAB(15) "WIDTH AND SPACING - (W)"
- 403 PRINT TAB(12) "OR HIGHT AND SPACING - (H)";: INPUT A$
- 410 PRINT: IF A$="Z0" THEN 800 ELSE IF A$="W" THEN 430
- 420 INPUT "WHAT IS LINE WIDTH"; W: GOTO 440
- 430 INPUT "WHAT IS BOARD HIGHT IN INCHES"; H
- 440 INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER
- 445 IF ER<=6 THEN K=4/(PI*(1+ER/2)) ELSE K=1/PI
- 450 INPUT "WHAT ARE THE DESIRED Zoe AND Zoo"; ZE, ZO
- 460 INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
- 470 IF Q$="Y"THEN INPUT"STRIP THICKNESS IN INCHES";T
- 480 Z0=ZE/2: GOSUB 200: RE=R: Z0=ZO/2: GOSUB 200: RO=R
- 490 G=(FNCH(HP*RE)+FNCH(HP*RO)-2)/(FNCH(HP*RO)-FNCH(HP*RE))
- 500 S1=FNAC(G)/HP: RP=FNCH(RE*HP): HC=(G+G*RP+RP-1)/2
- 510 W1=(FNAC(HC)-HP*S1)/PI
- 512 REM ************** SEARCH ************************
- 513 PRINT: PRINT "IN SEARCH": PRINT: I=0
- 515 G=FNG(S1)
- 520 HC=FNH(W1,S1):WE=FNAC((2*HC-G+1)/(G+1))/HP
- 530 WO=FNAC((2*HC-G-1)/(G-1))/HP+K*FNAC(1+2*(W1/S1))
- 540 DE=(WE-RE)/RE: DO=(WO-RO)/RO: I=I+1: IF I=100 THEN PRINT "DOES NOT CONVERG": GOTO 590
- 550 IF DE>0.01 AND DO>0.01 THEN W1=W1-W1*(DO+DE): GOTO 520
- 560 IF DE<-0.01 AND DO<-0.01 THEN W1=W1-W1*(DO+DE): GOTO 520
- 570 IF DE>0.01 AND DO<-0.01 THEN S1=S1-S1*(DE-DO): GOTO 515
- 580 IF DE<-0.01 AND DO>0.01 THEN S1=S1+S1*(DO-DE): GOTO 515
- 582 IF ABS(DE)<=0.01 AND ABS(DO)>0.01 THEN S1=S1+S1*DO: GOTO 515
- 584 IF ABS(DO)<=0.01 AND ABS(DE)>0.01 THEN S1=S1-S1*DO: GOTO 515
- 585 REM ************** FOUND *************************
- 590 R=WE:GOSUB 240:TE=ZT*2:VT=EF:R=WO:GOSUB 240:OO=ZT*2:OT=EF
- 595 R=W1: GOSUB 240: EF=SQR(VT*OT): S=S1*H
- 600 PRINT#DV:PRINT#DV,"WIDTH="W" HIGHT="H" SPACE="S" Z0="ZT" Zoe="TE" Zoo="OO
- 610 IF DV=2 AND W$="Y" THEN PRINT#2: PRINT#2,"FREQ="F;TAB(20)"V.F.="VF;TAB(40)"WAVELENGTH INCHES="WL: GOTO 700
- 620 IF DV=2 THEN 700
- 630 PRINT: INPUT "DO YOU WANT TO CALC WAVELENGTH (Y OR N)"; W$
- 640 PRINT: IF W$="N" THEN 670 ELSE INPUT "FREQ IN MHZ"; F
- 650 VF=1/SQR(EF): WL=VF*11808/F: PRINT#DV,
- 660 PRINT#DV, "V.F. ="; VF, "WAVELENGTH INCHES ="; WL
- 670 PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
- 680 IF H$="N"THEN 700 ELSE IF H$<>"Y"THEN 670 ELSE DV=2
- 690 PRINT#2:PRINT#2,"COUPLED MICROSTRIP CHARACTERISTICS":GOTO600
- 700 DV=0:PRINT:INPUT"DO YOU WANT TO CONTINUE (Y OR N)";Q$:PRINT
- 710 IF Q$="N" THEN END ELSE 25
- 790 REM ************** COUPLED ANALYSIS *****************
- 800 INPUT "WHAT IS LINE WIDTH"; W
- 805 INPUT "WHAT IS LINE SPACING"; S
- 810 INPUT "WHAT IS BOARD HIGHT IN INCHES"; H: RS=S/H
- 820 INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER: RW=W/H
- 825 IF ER<=6 THEN K=4/(PI*(1+ER/2)) ELSE K=1/PI
- 830 INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
- 840 IF Q$<>"Y" THEN 870 ELSE INPUT "STRIP THICKNESS IN IN."; T
- 850 IF RW>0.16 THEN Q=2*H/T ELSE Q=4*PI*W/T
- 860 DR=T*(1+LOG(Q))/(PI*H): RW=RW-DR
- 870 G=FNG(RS): HC=FNH(RW,RS):WE=FNAC((2*HC-G+1)/(G+1))/HP
- 880 WO=FNAC((2*HC-G-1)/(G-1))/HP+K*FNAC(1+2*(RW/RS))
- 890 R=WE:GOSUB 240:TE=ZT*2:VT=EF:R=WO:GOSUB 240:OO=ZT*2:OT=EF
- 900 R=RW:GOSUB240:EF=SQR(VT*OT):PRINT"Z0="ZT" Zoe="TE" Zoo="OO:GOTO630
-